home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2001 / MacHack 2001.toast / pc / The Hacks / Palm Finder 2 / Src / Views / main_form.cpp next >
Encoding:
Text File  |  2001-06-23  |  3.5 KB  |  197 lines

  1. // main_form.cpp
  2.  
  3. #include "main_form.h"
  4. #include "app_constants.h"
  5. #include "Finder_res.h"
  6. #include "drawing.h"
  7. #include "prefs.h"
  8. #include "da_mgr.h"
  9. // UI elements
  10. #include "superclock.h"
  11. #include "battery.h"
  12. #include "menu_bar.h"
  13. #include "events.h"
  14.  
  15. // constants
  16. const int    disk_x =138;
  17. const int    disk_y = 50;
  18.  
  19. //
  20. // constructor
  21. //
  22. main_form::main_form(FormPtr frmP):
  23.     view(), commander(NULL)
  24. {
  25.     // variables
  26.     UInt16                    gadget_index;
  27.     FormGadgetType*    gadgetP;
  28.     FinderPrefsType*     prefs = prefs::get_prefs();
  29.     int                        x, y;
  30.     
  31.     // initialize member variables
  32.     m_form = frmP;
  33.     
  34.     // set up bounds
  35.     FrmGetFormBounds (frmP,  &m_bounds);
  36.  
  37.     // create menu_bar from gadget
  38.     gadget_index = FrmGetObjectIndex (frmP, MainMenuBarGadget);
  39.     gadgetP = (FormGadgetType*) FrmGetObjectPtr (frmP, gadget_index);
  40.     menu_bar* the_menu_bar = new menu_bar(gadgetP, this);
  41.  
  42.     // attach superclock to menu_bar
  43.     gadget_index = FrmGetObjectIndex (frmP, MainSuperClockGadget);
  44.     gadgetP = (FormGadgetType*) FrmGetObjectPtr (frmP, gadget_index);
  45.     new superclock(gadgetP, the_menu_bar);
  46.     
  47.     // attach battery to menu_bar
  48.     gadget_index = FrmGetObjectIndex (frmP, MainBatteryGadget);
  49.     gadgetP = (FormGadgetType*) FrmGetObjectPtr (frmP, gadget_index);
  50.     new battery(gadgetP, the_menu_bar);
  51.     
  52.     // set default super-commander to me
  53.     set_default_commander(this);
  54.     
  55.     // create trash can
  56.     x = prefs->trash_position.x;
  57.     y = prefs->trash_position.y;
  58.     m_trashcan = new trashcan(x, y, this);
  59.     
  60.     // create ram disk icon
  61.     new icon(RAMDiskBitmap, RAMDiskMaskBitmap, "Palm RAM", disk_x, disk_y, this);
  62.  
  63.     // create desk accessory manager
  64.     m_da_mgr = new da_mgr(this);
  65. }
  66.  
  67.  
  68. //
  69. // destructor
  70. //
  71. main_form::~main_form() {
  72.     FinderPrefsType*     prefs = prefs::get_prefs();
  73.     int                        x, y;
  74.     
  75.     // save trashcan position
  76.     if (m_trashcan!=NULL) {
  77.         m_trashcan->get_position(x, y);
  78.         prefs->trash_position.x = x;
  79.         prefs->trash_position.y = y;
  80.     }
  81.  
  82.     delete m_da_mgr;
  83. }
  84.  
  85. //
  86. // handle_event
  87. //
  88. Boolean    
  89. main_form::handle_event(EventPtr eventP) {
  90.     Boolean         handled =     false;
  91.     FormPtr     active_form = FrmGetActiveForm();
  92.     
  93.     if (active_form!=m_form)
  94.         return false;
  95.     
  96.     idle();
  97.  
  98.     switch (eventP->eType) 
  99.         {
  100.         case menuEvent:
  101.             return dispatch_command(eventP->data.menu.itemID, NULL);
  102.  
  103.         case frmOpenEvent:
  104.             draw ();
  105.             handled = true;
  106.             break;
  107.  
  108.         case frmUpdateEvent:
  109.             draw ();
  110.             handled = true;
  111.             break;
  112.         
  113.         case penDownEvent:
  114.             handled = click(eventP->screenX, eventP->screenY);
  115.             break;
  116.  
  117.         default:
  118.             break;
  119.         
  120.         }
  121.     return handled;
  122. }
  123.  
  124. //
  125. // do_command
  126. //
  127. Boolean    
  128. main_form::do_cmd_self (int in_eventID, void* io_data) {
  129.     #pragma unused (io_data)
  130.     Boolean handled = true;
  131.  
  132.  
  133.     switch (in_eventID) {
  134.         // Apple Menu
  135.         case cmd_about:
  136.             FrmAlert (AboutBoxAlert);
  137.             break;
  138.         case cmd_alarm_clock:
  139.             m_da_mgr->open_alarm_clock();
  140.             break;
  141.         // File Menu
  142.         
  143.         // Special Menu
  144.         case cmd_empty_trash:
  145.             break;
  146.         case cmd_sleep:
  147.             SysSleep(false, false);
  148.             break;
  149.         case cmd_restart:
  150.             startup_sequence();
  151.             send_update_event();
  152.             break;
  153.         case cmd_shutdown:
  154.             FrmAlert (CantShutdownAlert);
  155.             break;
  156.         default:
  157.             handled = false;
  158.             break;
  159.     }
  160.     return handled;
  161. }
  162.  
  163. #pragma mark -
  164.  
  165. //
  166. // draw_self()
  167. //
  168. void
  169. main_form::draw_self() {
  170.     // draw form in background
  171.     FrmDrawForm (m_form);
  172. }
  173.  
  174. //
  175. // click_self()
  176. //
  177. Boolean
  178. main_form::click_self(int x, int y) {
  179.     #pragma unused (x, y)
  180.     
  181.     // variables
  182.     short     new_x, new_y;
  183.     Boolean    pen_down;
  184.     
  185.     // deselect icons
  186.     dispatch_command (evt_deselect_icons, NULL);
  187.     
  188.     // marquee
  189.     EvtGetPen ( &new_x, &new_y, &pen_down );
  190.     while (pen_down==true) {
  191.         EvtGetPen ( &new_x, &new_y, &pen_down );
  192.     } 
  193.     
  194.     return false;
  195. }
  196.  
  197.